package ziface

import "net"

type IConnection interface {
	Start()
	Stop()
	// GetTCPConnection 从当前连接获取原始的socket TCPConn
	//获取TCP连接的套接字
	GetTCPConnection() *net.TCPConn
	//GetConnID 获取当前连接ID
	GetConnID() uint32
	// RemoteAddr 获取远程客户端地址信息
	RemoteAddr() net.Addr
	// SendMsg 直接将数据封包发送给远程的TCP客户端
	SendMsg(msgId uint32, data []byte) error
	SendBuffMsg(msgId uint32, data []byte) error //添加带缓冲发送消息接口
	// SetProperty 设置连接属性
	SetProperty(key string, value interface{})
	// GetProperty 获取连接属性
	GetProperty(key string) (interface{}, error)
	// RemoveProperty 移除连接属性
	RemoveProperty(key string)
}

// HandFunc 同一处理连接业务的函数
type HandFunc func(*net.TCPConn, []byte, int) error

/*HandFunc这个函数类型，这个是所有conn链接在处理业务的函数接口，
第一参数是socket原生链接，第二个参数是客户端请求的数据，第三个参数是客户端请求的数据长度。这样，如果我们想要指定一个conn的处理业务，
只要定义一个HandFunc类型的函数，然后和该链接绑定就可以了。*/
